package com.td.module.farmer.service.plantinginformation;

import com.td.framework.common.pojo.PageResult;
import com.td.module.farmer.controller.admin.plantinginformation.vo.*;
import com.td.module.farmer.dal.dataobject.plantinginformation.PlantingInformationDO;

import javax.validation.Valid;
import java.util.Collection;
import java.util.List;

/**
 * 种植信息 Service 接口
 *
 * @author 王翔翔
 */
public interface PlantingInformationService {

    /**
     * 创建种植信息
     *
     * @param createReqVO 创建信息
     * @return 编号
     */
    Long createPlantingInformation(@Valid PlantingInformationCreateReqVO createReqVO);

    /**
     * 更新种植信息
     *
     * @param updateReqVO 更新信息
     */
    void updatePlantingInformation(@Valid PlantingInformationUpdateReqVO updateReqVO);

    /**
     * 删除种植信息
     *
     * @param id 编号
     */
    void deletePlantingInformation(Long id);

    /**
     * 获得种植信息
     *
     * @param id 编号
     * @return 种植信息
     */
    PlantingInformationDO getPlantingInformation(Long id);

    /**
     * 获得种植信息列表
     *
     * @param ids 编号
     * @return 种植信息列表
     */
    List<PlantingInformationDO> getPlantingInformationList(Collection<Long> ids);

    /**
     * 获得种植信息分页
     *
     * @param pageReqVO 分页查询
     * @return 种植信息分页
     */
    PageResult<PlantingInformationDO> getPlantingInformationPage(PlantingInformationPageReqVO pageReqVO);

    /**
     * 获得种植信息列表, 用于 Excel 导出
     *
     * @param exportReqVO 查询条件
     * @return 种植信息列表
     */
    List<PlantingInformationDO> getPlantingInformationList(PlantingInformationExportReqVO exportReqVO);

    /**
     * 查询种植表
     * @param farmerId 农户id
     */
    List<PlantingInformationDO> getAllPlanting(Long farmerId);
    /**
     * 统计地块数量和地块面积数量
     */
    PlantingInformationSumVO sumLandAndArea();

}
